/***************************************************************
|	File:		InstructionState.h
|	Author:		John Gawne
|	Course:		Structure of Game Design
|	Purpose:	InstructionState class creates the instructions menu state
***************************************************************/
#pragma once
#include "IGameState.h"
#include "../SGD Wrappers/SGD_Handle.h"	

class InstructionState : public IGameState
{
public:
/**********************************************************/
	// Singleton Accessor
	static InstructionState* GetInstance( void );

	
	/**********************************************************/
	// IGameState Interface:
	virtual void	Enter( void )				override;	// load resources
	virtual void	Exit ( void )				override;	// unload resources

	virtual bool	Input( void )				override;	// handle user input
	virtual void	Update( float elapsedTime )	override;	// update entites
	virtual void	Render( void )				override;	// render entities / menu

private:
	/**********************************************************/
	// SINGLETON!
	InstructionState( void )			= default;
	virtual ~InstructionState( void )	= default;

	InstructionState( const InstructionState& )				= delete;	
	InstructionState& operator= ( const InstructionState& )	= delete;


	/**********************************************************/
	// Cursor Index
	int		m_nCursor = 0;

	/**********************************************************/
	// Image Handlers
	SGD::HTexture		m_hInstBackground  = SGD::INVALID_HANDLE;
	SGD::HTexture       m_hPlayer		   = SGD::INVALID_HANDLE;
	SGD::HTexture		m_hEnemy		   = SGD::INVALID_HANDLE;
};

